DATE: July 15th, 1997
SUBJECT: Quake's texture files

OFFSET          SIZE/TYPE               COMMENTS
---------------------------------------------------------------------------
0000h           12 bytes, char[12]      Name of texture
000Ch           4 bytes, char[4]        "???K"
0010h           4 bytes, DWORD          width
0014h           4 bytes, DWORD          height
0018h           4 bytes, DWORD          offset of mipscale 0 image
001Ch           4 bytes, DWORD          offset of mipscale 1 image
0020h           4 bytes, DWORD          offset of mipscale 2 image
0024h           4 bytes, DWORD          offset of mipscale 3 image
0028h           char[width*height]      Image (mipscale 0)
?               char[(width/2)*(height/2)]
                                        Image (mipscale 1)
?               char[(width/4)*(height/4)]
                                        Image (mipscale 2)
?               char[(width/8)*(height/8)]
                                        Image (mipscale 3)

This way of storing the textures has to do with Quake's way of rendering
realistic 3D while not having to overburden the processer with every single
small pixel. The scale that determines which of these gets drawn can be changed
thru Quake's console variable: d_mipscale. Usually set to 1, 0 means no
mipscaling, while the higher the value the blockier the walls become.